/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Asignaciones;

import Entidades.Asignacionperiodocatedratico;
import Entidades.Horariocatedratico;
import Entidades.Periodo;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *Clase auxiliar para tener un horario de disponibilidad para el catedratico
 * Date 25/6/2013 7:35 pm
 * @author Isaac Cifuentes <isaaccivan@gmail.com>
 * @version 0.0
 * Branch Equipo_B
  */

    public class horario{
    
        Horariocatedratico dia; //el dia asingado 
        String nombredia;//nombre del dia;
        List<Asignacionperiodocatedratico> diaperiodos; //registros de tipo Asignacionperiodocatedratico correspondiente al dia 
        List<Periodo> misperidosdeldia;// los periodos del dia
        Query consulta;//objeto para hacer consultas
        EntityManager entidad;
        public horario(EntityManager entidad) {
            this.entidad=entidad;
        }
     /***
      * 
      * @param el dia que se desea ingresar
      * @param tipoderegistro indica si se buscan los registros disponibles (true) o los no disponibles(false)
      */   
    public void ingresar(Horariocatedratico dia, boolean tipoderegistro){
     int contador=0; //un contado para ingresar los valores en una lista que guarda objetos  de tipo Asignacionperiodocatedratico
     this.dia=dia;
     nombredia=dia.getDia();
     try{
   //todos eso periodos se ingresaran en una lista que gurada objetos Asignacionperiodocatedratico
    diaperiodos=buscarRegistros(tipoderegistro);
    //se obtienen los periosods y se guardan en una lista
    while(contador<diaperiodos.size()){
    misperidosdeldia.add(diaperiodos.get(contador).getPeriodoidPeriodo());
    contador++;   
    }
    contador=0;
    }catch(NullPointerException e){
    
    }
    }
    /***
     * 
     * @param tipoderegistros true para registros disponibles, false para registros no disponbiles
     * @return List<Asignacionperiodocatedratico>
     */
    public List<Asignacionperiodocatedratico> buscarRegistros(boolean tipoderegistros){
     consulta=entidad.createQuery("Select p from  Asignacionperiodocatedratico where p.HorarioCatedratico_idHorarioCatedratico:="+dia.getIdHorarioCatedratico().toString()+"and p.disponible="+tipoderegistros); 
     return consulta.getResultList();
    }
       
   
    public String getNombredia() {
        return nombredia;
    }
   public String verHorario(){
   String cadena="";
   cadena+=getNombredia()+" ";
 for(Asignacionperiodocatedratico h: diaperiodos){
   cadena+=h.getIdAsignacionPeriodoCatedratico().toString()+" "+h.getPeriodoidPeriodo().getHoraInicio().toString()+
           " "+h.getPeriodoidPeriodo().getHoraFin();
   }
 return cadena;
   }
   public String vermisperiodos(){
   String cadena="";
   cadena+=getNombredia()+" ";
 for(Periodo h: misperidosdeldia){
   cadena+=h.getHoraInicio().toString() +" "+h.getHoraFin().toString();
   }
 return cadena;
   } 
   }
  